package mx.uam.ayd.dulceria.persistencia.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import mx.uam.ayd.dulceria.dominio.Vendedor;

import mx.uam.ayd.dulceria.persistencia.ManejadorBD;


public class VendedorDAO_Derby implements VendedorDAO
{
	/**
	 * El constructor de esta clase es protegido para evitar que se hagan news fuera
	 * del package. Como la fabrica esta en el mismo package, ella si puede hacer new.
	 *
	 */
	VendedorDAO_Derby()
	{

	}

	/**
	 * El metodo crea representa la insercion del objeto en la base de datos
	 *
	 * @return
	 */
	public boolean crea(Vendedor usuario)
	{
		try {
			// Crea el statement
			Statement statement = ManejadorBD.dameConnection().createStatement();

			// Envia instruccion SQL
			statement.execute("insert into Vendedor values ('"+usuario.getNombre()+"','"+usuario.getPassword()+"',"+usuario.getTipo()+")");
			return true;
		} catch (SQLException e) {

			// Cacha excepcion
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * Regresa un usuario o null si no existe
	 *
	 * @param nombre
	 * @return
	 */
	public Vendedor recupera(String nombre)
	{

		try {
			// Crea el statement
			Statement statement = ManejadorBD.dameConnection().createStatement();

			// Recibe los resutados
			ResultSet rs = statement.executeQuery("SELECT * FROM Vendedor WHERE nombre='"+nombre+"'");

			if(!rs.next())
			{
				// No hubo resultado
				return null;
			}

			// Crea una nueva instancia del objeto
			Vendedor usuario = new Vendedor(nombre, rs.getString("password"), rs.getInt("tipo"));

			return usuario;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * Metodo que permite borrar un usuario
	 */
	public boolean borra(Vendedor usuario) {
		return false;
	}

	/**
	 * Metodo que permite actualizar usuario
	 */
	public boolean actualiza(Vendedor usuario) {
		return false;
	}


	/*
	 * (non-Javadoc)
	 * @see mx.uam.ayd.proyecto.persistencia.dao.UsuarioDAO#recuperaTodos()
	 */
	public List<Vendedor> recuperaTodos()
	{
		List<Vendedor> usuarios = new ArrayList<Vendedor>();

		try {
			// Crea el statement
			Statement statement = ManejadorBD.dameConnection().createStatement();

			// Recibe los resutados
			ResultSet rs = statement.executeQuery("SELECT * FROM Usuarios");

			while(rs.next())
			{
				// Crea una nueva instancia del objeto
				Vendedor usuario = new Vendedor(rs.getString("nombre"), rs.getString("password"), rs.getInt("tipo"));
				usuarios.add(usuario);
			}



			return usuarios;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

}